<?php

namespace App\Console\Commands;

use App\Models\ResourceBusinessName;
use App\Models\ResourceTotal;
use App\Models\ResourceType;
use App\Models\ResourceTypeExternal;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Log;

/**
 * 重置资源量 和 通过关键字屏蔽数据操作
 */
class ResetResourceNumberAndMaskData extends Command
{

    // 使用 命令行执行  php artisan command:ResetResourceNumberAndMaskData
    // 若使用 linux 后台执行则使用  nohup php artisan command:ResetResourceNumberAndMaskData &   //输入完后，关闭命令行
    // 或者使用 crontab 定时执行此命令行  1 1 * * * php /www/wwwroot/resource_integration_promote/artisan command:ResetResourceNumberAndMaskData  每天1点1分执行一次

    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'command:ResetResourceNumberAndMaskData';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = '重置资源量和按照关键字屏蔽数据操作';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return int
     * 重置资源量和按照关键字屏蔽数据操作
     */
    public function handle()
    {
        try {
            $resourceTotalModel = new ResourceTotal();
            //恢复所有屏蔽的数据
            $resourceTotalModel->maskDataRecover();
            //按照关键字屏蔽数据
            $resourceTotalModel->sensitiveResourceMask();

            //重置资源商的资源量
            $resourceBusinessNameModel = new ResourceBusinessName();
            $resourceBusinessNameModel->resetResourceBusinessNameNumber();
            //重置资源大类的资源量
            $resourceTypeModel = new ResourceType();
            $resourceTypeModel->resetResourceTypeNumber();
            //重置资源小类的资源量
            $resourceTypeExternalModel = new ResourceTypeExternal();
            $resourceTypeExternalModel->resetResourceTypeNumber();

            Log::channel('resetmaskdata')->debug(date('Y-m-d') . '重置资源量和按照关键字屏蔽数据操作完成');
        } catch (\Exception $e) {
            Log::channel('resetmaskdata')->debug(date('Y-m-d') . '重置资源量和按照关键字屏蔽数据操作出现异常:' . $e->getMessage() . ';File:' . $e->getFile() . ';Line:' . $e->getLine() . ';');
        }
    }
}
